package com.training.mapper;

import com.training.entity.Class; // 导入 Class 实体类
import org.apache.ibatis.annotations.Mapper; // 导入 MyBatis 的 Mapper 注解
// ... 其他 import 保持不变

import java.util.List; // 导入 Java 的 List 集合

@Mapper // 标记这是一个 MyBatis Mapper 接口
public interface ClassMapper {

    /**
     * 获取所有未被逻辑删除的班级列表
     */
    List<Class> findAllClasses();

    /**
     * 根据班级ID查找未被逻辑删除的班级
     */
    Class findClassById(Long id);

    /**
     * 插入一个新班级到数据库
     */
    int insertClass(Class classObj);

    /**
     * 更新班级信息
     */
    int updateClass(Class classObj);

    /**
     * 逻辑删除班级
     */
    int deleteClass(Long id);

    // --- NEW METHOD ---
    /**
     * 根据关键词搜索班级名称.
     * @param keyword 搜索关键词
     * @return 匹配的班级对象列表
     */
    List<Class> searchClasses(String keyword);

    // --- NEW: Methods to update student/course counts ---
    /**
     * 更新班级中的学生数量.
     * @param classId 班级ID
     * @param countChange 数量变化 (+1 或 -1)
     * @return 影响的行数
     */
    int updateClassStudentCount(Long classId, int countChange);

    /**
     * 更新班级中的课程数量.
     * @param classId 班级ID
     * @param countChange 数量变化 (+1 或 -1)
     * @return 影响的行数
     */
    int updateClassCourseCount(Long classId, int countChange);
}